#!/bin/bash

# 设置源应用目录和目标目录
SOURCE_DIR="/Volumes/Sun/Applications"
TARGET_DIR="/Applications"

# 检查外部卷是否挂载
if [ ! -d "$SOURCE_DIR" ]; then
    echo "错误: $SOURCE_DIR 目录不存在，请确保外部卷已正确挂载"
    exit 1
fi

# 检查是否有足够权限
if [ ! -w "$TARGET_DIR" ]; then
    echo "警告: 没有 $TARGET_DIR 的写入权限，尝试使用sudo运行"
    echo "请输入您的密码以获取管理员权限:"
    sudo "$0"
    exit $?
fi

echo "=== 开始同步应用程序 ==="
echo "源目录: $SOURCE_DIR"
echo "目标目录: $TARGET_DIR"
echo ""

# 第一步: 创建新的符号链接
echo "=== 1. 添加新应用的符号链接 ==="
# 遍历源目录中的所有应用
for app in "$SOURCE_DIR"/*; do
    # 获取应用名称
    app_name=$(basename "$app")
    
    # 跳过已存在的系统应用
    if [[ "$app_name" == "Safari.app" || "$app_name" == "Utilities" || "$app_name" == ".DS_Store" || "$app_name" == ".localized" ]]; then
        continue
    fi
    
    # 检查目标目录中是否已存在该应用的符号链接
    if [ ! -e "$TARGET_DIR/$app_name" ]; then
        echo "创建符号链接: $app_name"
        ln -s "$app" "$TARGET_DIR/$app_name"
    else
        # 检查是否已经是符号链接
        if [ -L "$TARGET_DIR/$app_name" ]; then
            # 检查符号链接是否指向正确的位置
            link_target=$(readlink "$TARGET_DIR/$app_name")
            if [ "$link_target" != "$app" ]; then
                echo "更新符号链接: $app_name (指向新位置)"
                rm "$TARGET_DIR/$app_name"
                ln -s "$app" "$TARGET_DIR/$app_name"
            else
                echo "已存在正确的符号链接: $app_name"
            fi
        else
            echo "警告: $app_name 已在目标目录中存在，但不是符号链接"
        fi
    fi
done

# 第二步: 清理已删除应用的符号链接
echo ""
echo "=== 2. 清理已删除应用的符号链接 ==="
for app_link in "$TARGET_DIR"/*; do
    # 只处理符号链接
    if [ -L "$app_link" ]; then
        link_target=$(readlink "$app_link")
        # 检查链接是否指向外部卷
        if [[ "$link_target" == "$SOURCE_DIR"* ]]; then
            # 检查目标是否存在
            if [ ! -e "$link_target" ]; then
                app_name=$(basename "$app_link")
                echo "清理断开的链接: $app_name"
                rm "$app_link"
            fi
        fi
    fi
done

echo ""
echo "=== 同步完成！==="
echo "提示: 当您在外部卷上添加或删除应用后，请再次运行此脚本以保持同步" 